DAX (Data Analysis Expressions) হল একটি শক্তিশালী ভাষা যা Power BI, PowerPivot, এবং SQL Server Analysis Services (SSAS)-এ ব্যবহৃত হয় ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরির জন্য। Dynamic Filters এবং Context Handling DAX-এ এমন দুটি গুরুত্বপূর্ণ ধারণা যা ডেটা বিশ্লেষণ এবং রিপোর্ট তৈরির ক্ষেত্রে অত্যন্ত কার্যকরী। এই ফাংশনগুলির মাধ্যমে আপনি ডেটা ফিল্টার করতে, নির্দিষ্ট শর্তে কাস্টম ক্যালকুলেশন করতে এবং ডেটার context নিয়ন্ত্রণ করতে পারেন।
এই প্রবন্ধে, আমরা Dynamic Filters এবং Context Handling এর ধারণা এবং কীভাবে এগুলি DAX-এ ব্যবহার করা হয় তা বিস্তারিতভাবে আলোচনা করব।
১. Dynamic Filters in DAX
Dynamic Filters ফাংশনগুলি ডেটা বিশ্লেষণের সময় ফিল্টারগুলি runtime এ পরিবর্তন করতে সাহায্য করে। এটি ব্যবহারকারীদের জন্য একটি ইন্টার্যাকটিভ এবং কাস্টমাইজড রিপোর্ট তৈরি করতে সহায়ক। Dynamic filters সাধারণত CALCULATE, FILTER, এবং ALLSELECTED ফাংশনগুলির মাধ্যমে ব্যবহৃত হয়।
CALCULATE ফাংশন এবং Dynamic Filters
CALCULATE ফাংশনটি DAX-এ সবচেয়ে গুরুত্বপূর্ণ ফাংশনগুলির মধ্যে একটি, যা একটি কাস্টম ক্যালকুলেশন বা এক্সপ্রেশন তৈরি করতে ব্যবহৃত হয় এবং এর উপর filters প্রয়োগ করতে সাহায্য করে।
Syntax:
CALCULATE(<expression>, <filter1>, <filter2>, ...)
- : এটি ক্যালকুলেশন বা গণনা যা আপনি করতে চান।
- : এক বা একাধিক filter যা আপনি প্রয়োগ করতে চান।
ব্যবহার:
ধরা যাক, আপনি একটি Sales টেবিলের জন্য বিক্রয় পরিমাণ নির্ধারণ করতে চান এবং আপনি চান যে ProductID এবং Region এর উপর কাস্টম ফিল্টার প্রয়োগ করা হোক:
Sales in Region = CALCULATE(SUM(Sales[Amount]), Sales[Region] = "East", Sales[ProductID] = 123)
এটি Sales টেবিল থেকে শুধুমাত্র সেই Sales[Amount] এর যোগফল বের করবে যেখানে Region "East" এবং ProductID 123।
FILTER ফাংশন এবং Dynamic Filters
FILTER ফাংশনটি একটি টেবিলের সারি ফিল্টার করার জন্য ব্যবহৃত হয়, যেটি নির্দিষ্ট শর্তে সম্পর্কিত ডেটা নির্বাচন করতে সাহায্য করে।
Syntax:
FILTER(<table>, <condition>)
ব্যবহার:
ধরা যাক, আপনি Sales টেবিল থেকে শুধু সেই সারিগুলি নির্বাচন করতে চান যেখানে Amount 1000 এর বেশি:
High Sales = FILTER(Sales, Sales[Amount] > 1000)
এটি Sales টেবিলের সব সারি থেকে শুধুমাত্র সেই সারিগুলি ফিরিয়ে দেবে যেখানে Amount 1000 এর বেশি।
ALLSELECTED ফাংশন
ALLSELECTED ফাংশনটি dynamic filters তৈরিতে ব্যবহৃত হয়, যা রিপোর্টের ভিজ্যুয়াল বা ব্যবহারকারীর সিলেকশনের উপর ভিত্তি করে ফলাফল পরিবর্তন করে। এটি visual context এবং filter context ব্যবহারে সহায়ক।
Syntax:
ALLSELECTED(<table_or_column>)
ব্যবহার:
ধরা যাক, আপনি Sales টেবিলের জন্য Amount এর মোট যোগফল বের করতে চান, তবে আপনি চান যে ফিল্টার করা Region এবং ProductID অনুযায়ী এই যোগফল হিসাব করা হোক:
Total Sales Selected = CALCULATE(SUM(Sales[Amount]), ALLSELECTED(Sales[Region]))
এটি Sales টেবিলের Amount এর মোট যোগফল বের করবে, তবে শুধুমাত্র সিলেক্ট করা Region অনুযায়ী ফলাফল হিসাব করা হবে।
২. Context Handling in DAX
Context Handling হল DAX-এর একটি গুরুত্বপূর্ণ ধারণা যা filter context এবং row context-এর মাধ্যমে ডেটার প্রক্রিয়া ও বিশ্লেষণ নিয়ন্ত্রণ করে। DAX ফাংশনগুলির সঠিক ব্যবহার এবং context-এর সঠিক ব্যাখ্যা আপনার বিশ্লেষণ এবং কাস্টম ক্যালকুলেশনগুলি নিখুঁতভাবে তৈরি করতে সাহায্য করবে।
Row Context এবং Filter Context
- Row Context: এটি একটি iterative context তৈরি করে, যখন আপনি row-by-row calculation করতে চান। এটি সাধারণত calculated columns এবং iterators ফাংশনগুলির মধ্যে ব্যবহৃত হয়।
- Filter Context: এটি নির্ধারণ করে কোন ডেটা একটি ক্যালকুলেশন বা measure এর জন্য ব্যবহার করা হবে। এটি CALCULATE, ALL, এবং অন্যান্য filter functions দ্বারা নিয়ন্ত্রিত হয়।
Row Context Example:
Profit = Sales[Amount] - Sales[Cost]
এখানে, Profit ক্যালকুলেশনটি Sales টেবিলের প্রতিটি সারির জন্য একটি row context তৈরি করবে, যা Amount এবং Cost কলামগুলির মধ্যে পার্থক্য বের করবে।
Filter Context Example:
Total Sales in Region = CALCULATE(SUM(Sales[Amount]), Sales[Region] = "East")
এটি Sales টেবিলের Amount এর যোগফল বের করবে, তবে শুধু Region "East" এর জন্য। এখানে Sales[Region] কলামের ফিল্টার filter context তৈরি করছে।
৩. Dynamic Filters with User Selections
DAX ব্যবহার করে, আপনি user-selected filters বা slicer selections এর ভিত্তিতে ডেটা কাস্টমাইজ করতে পারেন। ALLSELECTED এবং USERELATIONSHIP ফাংশনগুলি এই পরিস্থিতিতে খুব কার্যকর।
Example: Dynamic Filter with Slicer Selections
ধরা যাক, আপনি চান যে Sales টেবিলের মোট বিক্রয় পরিবর্তিত হোক Region এবং Product সিলেকশনের উপর ভিত্তি করে, তাহলে আপনি ALLSELECTED ফাংশন ব্যবহার করতে পারেন:
Dynamic Sales = CALCULATE(SUM(Sales[Amount]), ALLSELECTED(Sales[Region]), ALLSELECTED(Sales[ProductID]))
এটি Sales টেবিলের Amount এর মোট যোগফল বের করবে, তবে শুধুমাত্র সিলেক্ট করা Region এবং Product অনুযায়ী।
৪. Use of Variables in Context
Variables (যেমন VAR এবং RETURN) DAX-এ context হ্যান্ডলিংকে আরও সহজ এবং কার্যকরী করে তোলে। এটি আপনার এক্সপ্রেশনগুলোকে অপটিমাইজ এবং পুনঃব্যবহারযোগ্য করে তোলে।
Syntax:
VAR <variable_name> = <expression>
RETURN <expression_using_variable>
ব্যবহার:
যেমন, আপনি যদি Sales টেবিলের জন্য Total Sales এবং Discounted Sales এর পার্থক্য বের করতে চান, তাহলে আপনি ভ্যারিয়েবল ব্যবহার করতে পারেন:
Sales Difference =
VAR TotalSales = SUM(Sales[Amount])
VAR DiscountSales = SUM(Sales[DiscountedAmount])
RETURN TotalSales - DiscountSales
এটি TotalSales এবং DiscountSales এর মধ্যে পার্থক্য বের করবে এবং RETURN এর মাধ্যমে ফলাফল প্রদান করবে।
সারাংশ
Dynamic Filters এবং Context Handling DAX-এ অত্যন্ত গুরুত্বপূর্ণ কৌশল, যা ডেটা বিশ্লেষণ এবং কাস্টম ক্যালকুলেশন তৈরি করতে সাহায্য করে। Dynamic Filters ব্যবহার করে আপনি runtime-এ ফিল্টার প্রয়োগ করতে পারেন এবং Context Handling ফাংশনগুলির মাধ্যমে আপনি filter context এবং row context নিয়ন্ত্রণ করতে পারবেন। এটি Power BI এবং Excel-এ interactivity এবং customization যোগ করতে সহায়ক হয়, যাতে আপনার রিপোর্ট এবং বিশ্লেষণ আরও সুনির্দিষ্ট এবং কার্যকরী হয়।
Read more